package com.example.testlxr9096;

import android.content.Context;
import android.media.AudioManager;
import android.media.ToneGenerator;
import android.os.Handler;
import android.os.Looper;
import android.os.Vibrator;
import android.util.Log;

public class AlarmHelper {
    private static final String TAG = "AlarmHelper";
    private static final int BEEP_DURATION = 200;  // 单次"滴"声时长(ms)
    private static final int BEEP_INTERVAL = 100;  // 两次"滴"声间隔(ms)
    private static final int MAX_VOLUME = 100;      // 最大音量
    private static final int TONE_TYPE = ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD; // 高频音效

    // 播放滴滴声并伴随振动
    public static void playBeepAlarm(Context context) {
        try {
            // 1. 确保音频流音量最大化
            setAlarmVolumeMax(context);

            // 2. 创建声音生成器
            final ToneGenerator toneGen = new ToneGenerator(AudioManager.STREAM_ALARM, MAX_VOLUME);

            // 3. 播放第一次"滴"声
            toneGen.startTone(TONE_TYPE, BEEP_DURATION);

            // 4. 添加振动效果


            // 5. 使用Handler安排第二次"滴"声和资源释放
            new Handler(Looper.getMainLooper()).postDelayed(() -> {
                try {
                    // 播放第二次"滴"声
                    toneGen.startTone(TONE_TYPE, BEEP_DURATION);

                    // 振动再次触发

                    // 确保声音播放完成后释放资源
                    new Handler(Looper.getMainLooper()).postDelayed(() -> {
                        try {
                            toneGen.release();
                        } catch (Exception e) {
                            Log.e(TAG, "释放ToneGenerator失败: " + e.getMessage());
                        }
                    }, BEEP_DURATION + 50);

                } catch (Exception e) {
                    Log.e(TAG, "播放第二次声音失败: " + e.getMessage());
                    toneGen.release();
                }
            }, BEEP_DURATION + BEEP_INTERVAL);

        } catch (RuntimeException e) {
            Log.e(TAG, "创建ToneGenerator失败: " + e.getMessage());
        }
    }

    // 设置警报音量为最大值
    private static void setAlarmVolumeMax(Context context) {
        try {
            AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            if (am != null) {
                am.setStreamVolume(
                        AudioManager.STREAM_ALARM,
                        am.getStreamMaxVolume(AudioManager.STREAM_ALARM),
                        0
                );
            }
        } catch (Exception e) {
            Log.e(TAG, "设置音量失败: " + e.getMessage());
        }
    }

    // 短振动效果


    // 在Activity/Fragment中使用示例

}